/*
 * rc_engine.c
 *
 *  Created on: 20/05/12
 *      Author: mzavatto
 */

#ifndef RC_ENGINE_C_
#define RC_ENGINE_C_

	#include <stdbool.h>
	#include <memcached/engine.h>
	#include <memcached/util.h>
	#include <memcached/visibility.h>


	/*
	 * Esta es una estructura custom que utilizo para almacenar la configuración que me pasa memcached
	 *
	 */
	typedef struct {
	   size_t cache_max_size;
	   size_t block_size_max;
	   size_t chunk_size;
	   size_t allocate_algorithm;
	   size_t deallocate_algorithm;
	}t_rc_config;


	/*
	 * Esta es la estructura que utilizo para representar el engine, para que memcached pueda manipularla el
	 * primer campo de esta tiene que ser ENGINE_HANDLE_V1 engine; el resto de los campos pueden ser los que querramos
	 */
	typedef struct {
		ENGINE_HANDLE_V1 engine;
		GET_SERVER_API get_server_api;
		t_rc_config config;
	}t_rc;


	// Esta funcion es escencial ya que es la que busca memcached para ejecutar cuando levanta la shared library
	MEMCACHED_PUBLIC_API ENGINE_ERROR_CODE create_instance(uint64_t interface, GET_SERVER_API get_server_api, ENGINE_HANDLE **handle);

#endif /* RC_ENGINE_C_ */
